weird algorithm in c